
前七天累積下來的清單裡,測過的都是「工具能不能把事情做對」,今天想補一個完全不同的角度:一個 skill 能不能把「事情做對」這件事,用一個特定讀者真正用得上的方式講出來——這其實是很多技術文件、很多工程師寫的說明常常忽略的一塊,做對了事情,但講出來的方式讓人抓不到重點。今天測的東西比前幾天輕巧很多,是一個叫 i-have-adhd 的小眾 skill——它的宣稱很具體:不是把回答變短,是把回答的「形狀」改成一個 ADHD 大腦真的能動手做的樣子。前七天測過的都是文件查詢、記憶系統、資安掃描、自動迭代這種重機制,今天想測一個純粹關於「怎麼把話講出來」的 skill,而且過程中撞到一件前七天都沒遇過的事:這個 skill 直接拒絕被我用其他方式冒充啟動。

i-have-adhd,MIT 授權,小眾作者出品,分類標籤標的是「ADHD、輸出風格、生產力」/i-have-adhd,效果持續到整個對話的剩餘時間,直到使用者說「stop adhd mode」才關閉——不是單次觸發,是整場對話的持久模式disable-model-invocation: true。這代表模型不能自己判斷「這個讀者好像需要這個」就主動叫它,一定要人親自打指令這個 skill 的文件開頭沒有直接列規則,先講了五個事實,說這五件事決定了下面每一條規則的存在理由。這個順序本身就值得注意——先講「為什麼」,再講「怎麼做」,而不是一份憑空冒出來的格式規定。
第一,工作記憶容量小:任何沒有留在畫面上的東西都會被忘記,所以規則明講不能要求讀者「記住某件事」,該記住的東西要留在畫面上,不能只是講過一次就算數。第二,知道答案不等於做了答案:從「懂了」到「做完」中間的摩擦力,正是工作卡住最常發生的地方——這也是為什麼規則會要求開頭就給一個可以直接動手的動作,而不是先給一段背景說明。第三,開始永遠是最難的一步:所以第一個動作必須明顯、小、現在就能做,不能是一個模糊的方向。第四,時間感受不出差異:「花一點時間」跟「要花幾個小時」在感受上是一樣模糊的,所以規則要求時間估計要換算成具體的單位。第五,成就感是稀缺資源:做完的東西如果被埋在一段回顧文字裡,不會真的被感受到,所以規則要求做完的東西要明講出來,不能只是順帶一句「我做了一些調整」。
這五件事不是憑空歸納,是這個 skill 存在的整個論證基礎——後面每一條規則,回頭看都能對應到其中一件,這種「先立論證、再推規則」的寫法,本身就跟很多只列規則、不講理由的 skill 文件不一樣。這也是為什麼今天想花比較多篇幅講清楚這個 skill 到底在做什麼,而不是只給結論:一個規則如果你不知道它為什麼存在,很容易只學到表面的格式,卻用錯場合。
值得多花一句講清楚,這五個事實不是在講「ADHD 的人比較懶」或「注意力比較差」這種簡化的刻板印象,講的是工作記憶、啟動障礙、時間感知、動機回饋這幾個具體、可以查證的認知機制差異。一般 AI 助理的預設輸出風格——先鋪陳背景、慢慢帶到重點、結尾客氣地問還需不需要幫忙——這種寫法對很多讀者來說只是稍微囉唆,但對這五個事實描述的讀者來說,會直接變成「資訊有進來,但沒辦法真的被拿去用」的落差。這個 skill 想解決的不是「文字太多」,是「資訊的排列方式跟一個特定大腦處理資訊的方式對不上」,這個定位上的精準,也是我覺得值得花篇幅講清楚的原因。
第一條,開頭就是動作。 第一行必須是讀者能做的事,不是背景、不是計畫。如果答案是一個指令、一個路徑或一段程式碼,它排第一位,散文放在後面(如果還需要的話)。
第二條,多步驟一定編號。 超過一步的工作寫成編號清單,每一步是一個有邊界的單一動作,沒有任何一步裡藏著兩個「然後」。步驟數用最少能成立的數量,可以省略的步驟直接刪掉,瑣碎的步驟併進前一步——寧可一條走完的短路徑,也不要一條沒走完的完整路徑。
第三條,結尾給一個具體的下一步。 如果還有事沒做完,明講一件讀者能在兩分鐘內做的事,哪怕只是「打開這個檔案」也算數。
第四條,把離題的事拆開處理。 如果同時存在第二個問題,先講完第一個,再把第二個當成一個獨立的問題提出來,不要混在同一段裡一次講完。但如果那個問題是工作過程中自然冒出來、而且自己能回答的,就自己答完、直接併進結果裡;真的需要讀者決定的,才留到最後單獨問一次。
第五條,每一輪都要重述目前狀態。 讀者沒辦法在兩則訊息之間記住「我們現在在第 3 步、共 5 步」,所以每次都要講一次。規則文件裡舉的對照例子很清楚:不好的講法是「做完了,準備好進行下一步了嗎?」,好的講法是「5 步裡的第 3 步做完了:schema 已更新。下一步:回填新欄位。要跑這支腳本嗎?」——差別在後者明講了「在哪一步」跟「接下來是什麼」,前者只有一句空泛的「做完了」。如果環境裡有任務或計畫工具,多步驟工作要用它——一個步驟一個項目,同一時間只有一項在進行;清單本身負責重述進度,不需要額外再用散文把整個計畫講一次。
第八條再多講一點。 規則文件裡舉的對照例子是:不好的講法是「糟糕,測試失敗了,好像出了什麼問題」;好的講法是「測試在 auth.spec.ts:42 失敗:預期回傳 200,實際拿到 401。原因:缺少驗證標頭。修法:把 Authorization: Bearer ${token} 加進請求裡」。前者除了情緒詞什麼資訊都沒給,後者把「在哪裡」「預期跟實際差在哪」「為什麼」「怎麼修」四件事一次講完,語氣從頭到尾平穩,沒有製造任何額外的焦慮感。
第六條,時間估計要具體。 模糊的估計沒有用,要換算成具體的單位講出來,例如「如果測試本來就涵蓋這塊,大概 15 分鐘;沒涵蓋的話,可能要一個下午」。
第七條,做完的東西要讓人看得到。 用具體的方式講清楚現在能用的是什麼,不要把成果埋在一段回顧文字裡。
第八條,出錯的時候語氣要平實。 不用「糟糕」「哎呀」「好像有個問題」這類語氣詞,直接講原因跟怎麼修。
第九條,清單最多列 5 項。 超過 5 項就拆成「現在做」跟「之後做」,或者「必須」跟「加分項」——五項排過序的清單,勝過十項沒排序的清單。
第十條,不要開場白、不要總結、不要客套話。 「好問題」「讓我來」「當然!」這類開場白全部禁止;做完之後不要再用一段「我已經完成了 X、Y、Z」總結一次;結尾也不准出現「有其他需要嗎」「希望有幫助」這類客套話。答案從答案本身開始,答完就結束,不需要額外包裝。

規則文件的最後有一段「送出前檢查」,明講在送出回答之前要刪掉五件事:第一句如果只是在宣告「我接下來要做什麼」,刪掉;最後一句如果是在問「還需要什麼嗎」或者在總結剛剛做了什麼,刪掉;任何「順帶一提」的旁支話題,刪掉;任何沒有帶來額外資訊的模糊副詞(像是「也許」「可能」「或許可以」),刪掉——但如果那個模糊詞本身承載了真實的不確定性,就留著,刪掉它等於是硬裝出一種不存在的篤定感;任何比喻或成語(像是「回頭談談」「先推動起來」「站在同一陣線」),換成字面上真正的那個動作。
最後有一句自我檢查的問法,我覺得是整份文件裡設計得最好的一句:如果讀者只看第一句跟最後一句,他知不知道(a)接下來要做什麼、(b)剛剛發生了什麼?如果答案是肯定的,才送出。這個問法把一份規則清單,變成一個可以自己驗證的測試,不是一堆主觀的格式偏好。
這種「把規則收斂成一個可以自問自答的檢查題」的做法,比起列一長串條文更容易真的被記住、被執行——十條規則背下來不容易,但「頭尾兩句夠不夠用」這一個問題,任何時候都可以拿出來問自己一次,門檻低很多。一份規則文件如果只停在條列規則,讀者要嘛全部記住、要嘛全部忘記;如果最後收斂成一個容易複誦的自我檢查問句,才真正有機會變成習慣,而不是一份寫完就束之高閣的規範。
拆完十條規則之後,會發現一件有意思的事:這些規則裡沒有一條是「只有 ADHD 讀者才需要」的特殊待遇,每一條單獨拿出來看,都是一般寫作、一般溝通本來就該做到的事——先講重點、多步驟要編號、廢話要刪掉、時間估計要具體。這正是無障礙設計(accessibility design)常見的一個特性:為某個特定需求設計出來的規則,往往對所有人都有幫助,只是對這群人來說是「必要」,對其他人來說是「加分」。像是人行道的斜坡,原本是為輪椅使用者設計的,但推嬰兒車、拖行李箱的人一樣受益。這個 skill 某種程度上示範了同一個道理:把輸出寫得讓 ADHD 讀者能行動,結果是任何一個時間有限、注意力被切割的讀者,都會覺得這樣的輸出比較好用——而這年頭誰的注意力不是被切割的。
同一個問題:「我有一個小型 Node.js Express API,callback 寫法的資料庫存取想改成 async/await,也在想要不要順便加 TypeScript、要怎麼寫測試,可以幫我規劃嗎?」
沒有這個 skill 的版本,給了一份很完整、很專業的規劃——分成三個階段、每階段有子項目、中間穿插程式碼範例,結尾用一段「小結時間軸」把整個規劃重新講一遍。內容完全正確,任何一個資深工程師看了都不會有意見。但它的開頭是「這個規劃我來幫你拆解一下」,中段大量使用「理由是」「建議」這類解釋性語句,TypeScript 該不該上這件事跟 async 遷移、測試策略混在同一份文件裡一起講,讀者要自己從一大段文字裡抓出「我現在該做的第一件事是什麼」。
有這個 skill 的版本,開頭就是:
「Run these in order: 1. Add
express-async-handler... — 5 min... 2. Write API-level tests against the current callback code first... — 30–60 min...」
沒有任何開場白,第一行就是可以直接照做的指令,而且時間估計精確到分鐘級。TypeScript 這件事被單獨切出來講——「Skip for now」,附一句為什麼現在不該做(兩個風險疊在一起會讓人搞不清楚是哪個改動搞壞的),沒有跟主線任務混在一起。清單全部卡在 5 項以內。結尾不是總結,是一句可以在兩分鐘內做的具體動作:「install express-async-handler now, or paste your DB access code and I'll convert the first function」。
兩份內容講的建議其實高度重疊——都建議先寫特徵測試再改、都建議 TypeScript 晚點做、都提到 express-async-handler 這類 middleware。差異不在建議的專業程度,在讀者拿到手上之後,第一秒鐘知不知道要做什麼。這也回答了一開始可能會有的疑慮:會不會為了精簡而漏掉重要資訊?兩份內容比對下來,資訊量沒有明顯減少,減少的是讀者要自己重新整理、自己排優先順序的那道工序,這道工序原本是隱形的,讀者往往不會意識到自己其實多做了這一步。

不只是感覺上比較精簡,逐條核對過才算數:
| 規則 | 有沒有守住 | 依據 |
|---|---|---|
| 1. 開頭是動作 | 符合 | 第一行就是 Run these in order |
| 2. 多步驟編號 | 符合 | 主計畫 5 步,必測案例另外編號 |
| 3. 結尾給下一步 | 符合 | 結尾是「install ... now, or paste your DB code」 |
| 4. 拆開離題內容 | 符合 | TypeScript 獨立標成「Skip for now」,沒跟主線混在一起 |
| 5. 重述狀態 | 不適用 | 單輪對話,沒有跨輪次可重述 |
| 6. 具體時間估計 | 符合 | 「5 min」「30–60 min」 |
| 7. 成果可見 | 不適用 | 這是規劃任務,還沒有做出東西可以展示 |
| 8. 出錯語氣平實 | 不適用 | 這次沒有出現錯誤情境 |
| 9. 清單上限 5 項 | 符合 | 主計畫剛好 5 項,必測案例也卡在 5 項 |
| 10. 無開場白/總結/客套 | 符合 | 沒有「好問題」開頭,沒有回顧總結,沒有「還需要什麼嗎」 |
十條裡,三條因為任務性質用不上(單輪對話沒有狀態可重述、規劃任務還沒有成果可展示、這次沒踩到錯誤情境),其餘七條全部符合。這不是我主觀覺得「看起來比較俐落」,是拿規則文件逐條核對出來的結果。
這種逐條核對的做法,其實也是這系列從 Day 1 就在用的方法——不是讀完一份輸出、憑印象說「感覺有差」,是把宣稱拆成一條一條可以打勾或打叉的具體項目,再一條一條去核對。今天能夠做到逐條核對,剛好也是因為這個 skill 本身把規則寫得夠具體、夠可驗證——如果它只寫了一句「請你回答得更簡潔一點」,今天這張表根本做不出來,因為沒有明確的判準可以拿來打勾。規則寫得越具體,事後越容易被驗證,這件事本身也是值得記住的教訓,不只適用於今天這個 skill。
原本的測試計畫,是我自己想辦法叫出這個 skill、比對兩種輸出。第一次嘗試直接呼叫,工具回傳一段很明確的拒絕,大意是:這個 skill 不能透過工具呼叫的方式啟動,而且明講不准用讀取它的規則檔、自己模仿套用的方式繞過這條限制——這不是一般的「找不到、換個名字再試試」,是系統層級刻意擋住任何形式的代打。
這條設計其實邏輯很清楚,只是我一開始沒想到:一個宣稱「讀者有 ADHD」的 skill,如果能被我隨便找個理由就假裝啟動一次拿來當展示品,那它保護的東西就沒意義了。這種持續整場對話、跟使用者真實需求綁定的工具,如果連「要不要用」都可以被 AI 自己代為決定,等於是在沒有本人同意的情況下,替他貼了一個標籤。所以最後我停下來,請 Ci 自己在對話裡打了 /i-have-adhd——今天的「有裝」那組資料,是這樣拿到的,不是我用任何方式模擬出來的。

這個 skill 沒有把規則寫死到底,裡面明講了幾種該打破預設規則的情況:使用者要求「解釋一下」或「帶我走一遍」時,可以完整展開,只是開頭結尾一樣要乾淨,可以加上標題方便讀者回頭找重點;碰到有破壞性的操作(例如刪除資料、強制推送、動資料庫結構)時,安全優先於精簡,該確認就要確認;如果連續幾輪都卡在「還是壞的」,規則要求先停下來、講清楚可能是哪個假設錯了,而不是繼續無腦重試;當使用者問的是「有哪些選項」這種情境,規則會讓步——這時候答案本來就該是二到四個排序過的選項、附上取捨、推薦排在最前面,不是硬壓成一條路,因為選項本身就是答案。
最後一條我覺得設計得特別細:如果這個 skill 在一個 agent 工具環境裡運作,遇到系統本身要求的動作(像是環境要求要先宣告會呼叫某個工具),系統的要求優先於這個 skill 的規則,時間估計要換算成「真正執行這些步驟的人」的角度,但「形狀」還是要維持——意思是精簡、直接、可執行的風格不會丟,只是遇到更高層級的硬性要求時,讓路給那個要求,不會為了守住自己的規則而跟系統對著幹。一個規則集知道自己什麼時候該讓步,比一個規則集堅持到底更難寫,也更少見。
這六條例外放在一起看,其實有一個共通的設計哲學:規則要為目的服務,不能反過來讓目的服務規則。第五條例外講得最直白——「當一條規則會刪掉答案本身時,任務優先,形狀保留」,意思是精簡跟直接這件事永遠是手段,不是目的本身;如果為了守住「清單不超過五項」這條規則,硬是把使用者真正需要的第六個選項砍掉,那就本末倒置了。這種「原則要服務於目的,不能反過來綁架目的」的思路,其實也是判斷任何一份規則文件寫得好不好的通用判準,不只適用於這個 skill。
caveman 放在一起看,才看得出兩者要解決的問題不一樣這幾天順便查了一下同類型的小眾 skill,發現一個常被拿來跟 i-have-adhd相提並論的東西叫 caveman——同樣是持久性的溝通風格模式,同樣要靠使用者自己觸發、講到關掉為止,表面上很像,但目標完全不同。caveman 的宣稱是「實測減少 65% 輸出 token,同時保留完整技術正確性」,核心訴求是省成本;i-have-adhd 的宣稱是「把輸出的形狀改造成讀者能行動」,核心訴求是降低從理解到動手之間的摩擦力,不是省字數——它的回答不一定比較短,只是比較容易被拆解成動作。兩者剛好可以用來提醒一件事:兩個「讓輸出變精簡」的 skill,背後可能是完全不同的問題在驅動,選錯目標會拿到不對的東西——如果你要的是省成本,i-have-adhd 給你的可能不夠短;如果你要的是行動導向的結構,caveman 的極簡風格可能反而把你需要的步驟結構壓扁了。這兩個 skill 今天都還沒有正式各自測過一輪,這裡只先記下定位上的差異,實測留給以後的篇幅。

如果你自己也有這種需求(或者團隊裡有人有這種需求),這幾件事值得知道:
/i-have-adhd 啟動。 如果你期待「叫 AI 自動判斷我需不需要這個」,它做不到,也刻意設計成做不到。這系列接下來還是每篇一個獨立的技能卡,累積起來變成一份你自己就能查的 skill 選用清單。